/**
给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
请注意 ，必须在不复制数组的情况下原地对数组进行操作。
 */

/**
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
 */

/**
 * 思路
 * 使用双指针，左指针指向已经处理好的序列尾部，右指针执行待处理序列头部
 * 循环数组，右指针往右移动，碰到非零数，与左指针交换数据，左指针加一
 */
var moveZeroes = function (nums) {
    let right = 0
    let left = 0
    for (let i = 0; i < nums.length; i++) {
        if (nums[right] != 0) {
            const temp = nums[right]
            nums[right] = nums[left]
            nums[left] = temp
            left++
        }
        right++
    }
};